livecodefandomcom_de-20200214-history
MySQL
Datenbank Setup LiveCode hat eine Beispieldatenbank eingerichtet, die solche Skripte verwenden. Um sie für deine eigene Datenbank zu verwenden, musst du die Adresse der Datenbank, die Portnummer (falls abweichend von der Standardeinstellung), deinen Benutzernamen und dein Passwort kennen. Grundlagen: Es gibt 4 Hauptvorgänge, die du ausführen können solltest: # öffnen einer Verbindung zu einer Datenbank # Daten aus der Datenbank auslesen - Abfrage (Query) der Datenbank # Ändern der Datenbank: hinzufügen, bearbeiten oder löschen der Einträge # schließen der Datenbankverbindung. Wenn du eine Verbindung zu einer Datenbank herstellst, erhältst du eine Verbindungs-ID. Du musst diese Verbindungs-ID in allen anderen Vorgängen verwenden, um deinen Scripts mitzuteilen, welche Datenbankverbindung verwendet werden soll. Mit der Datenbank verbinden Erstelle einen neuen Stack und füge einen Button aus der Tools palette hinzu. Verwende den Inspektor um den Namen des Buttons zu "Verbinden" zu ändern und kopiere das Skript unten in das Skript des Buttons. Wir verwenden hier RevOpenDatabase: on mouseUp put "runrev.com" into tDatabaseAddress put "runrev_test" into tDatabaseName put "runrev_example" into tDatabaseUser put "example" into tDatabasePassword -- Verbindung mit der Datenbank put revOpenDatabase("MySQL", tDatabaseAddress, tDatabaseName, tDatabaseUser, tDatabasePassword) into tResult -- stellt fest ob es korrekt arbeitet und zeig eine Nachricht, wenn nicht -- & deklariert die connection ID als globale Variable if tResult is a number then put tResult into tConnectionID -- wir benutzen eine allgemeine propertie um sie überall verwenden zu können set the ConnectionID of this stack to tConnectionID answer info "Connected to the database." & cr & "Connection ID = " & gConnectionID else put empty into gConnectionID answer error "Unable to connect to the database:" & cr & tResult end if end mouseUp Speichere das Script im Script Editor, wechsle in den Live-Modus und klicke den "Verbinden" - Button zum testen. Es sollte sich nun mit der Sample Datenbank auf runrev.com verbinden und dir sagen, ob es erfolgreich war. Wenn es eine Error-Meldung gibt, dann kontrolliere noch einmal das Script. Insbesondere die vier Variablen, welche die Verbindungs-Informationen beinhalten. Beachte: Wenn du den Button mit den falschen Einstellungen testet, kann es längere Zeit dauern bis die Verbindung fehlschlägt. Geräte also nicht in Panik, wenn es wie eingefroren aussieht. Daten aus der Datenbank erhalten Um Daten aus der Datenbank zu erhalten, konstruierst du eine Standart SQL Abfrage. Hierfür benutzt du die revDataFromQuery Funktion, um die passenden Daten zu erhalten. Ziehe einen weiteren Button auf deine Card und benenne ihn mit Hilfe des Inspectors zu "Abfrage" um. Nun ziehst du noch ein "Scrolling Text Field" auf die Card und nennst es "Data". Die Namen der Buttons sind nicht so wichtig, doch das Script wird sich auf auf das Field "Data" beziehen. Stelle also sicher, dass der Button korrekt benannt ist. Kopiere nun das untenstehende Script und füge es in das Script des "Abfrage" - Buttons ein: on mouseUp -- checkt die globale connection ID um sicherzustellen, dass eine korrekte Datenbank Verbindung besteht put the connectionID of this stack into gConnectionID if gConnectionID is not a number then answer error "Please connect to the database first." exit to top end if -- konstruiert das SQL (dies wählt alle Daten aus der angegebenen Tabelle aus) put "Table1" into tTableName -- ändere hier auf den Namen einer Tabelle in deiner Datenbank put "SELECT * FROM " & tTableName into tSQL -- Fragt die Datenbank ab put revDataFromQuery(tab, cr, gConnectionID, tSQL) into tData -- überprüft das Ergebnis und zeigt die Daten oder eine Error Mitteilung an if item 1 of tData = "revdberr" then answer error "There was a problem querying the database:" & cr & tData else put tData into field "Data" end if end mouseUp Speichere das Script und teste den Button im Live Modus. Ich habe einige Beispieleinträge in die Datenbank eingegeben, damit du einige Informationen im "Data" Field erscheinen sehen solltest. Neue Daten in die Datenbank einfügen Hierfür wird eine ähnliche Technik wie bei der Abfrage der Daten benutzt. Konstruiere einen SQL-Befehl um neue Daten einzufügen und benutze dann einen LiveCode Befehl um dieses SQL an die Datenbank zu senden und eine Antwort darauf zu erhalten. Hier wird der Befehl revExecuteSQL verwendet. Erstelle wie zuvor einen neuen Button und nenne ihn "Daten einfügen". Kopiere untenstehendes Script und füge es in das Script dieses Buttons ein. on mouseUp -- checkt die global connection ID um sicherzustellen dass eine Datenbank Verbindung besteht put the connectionID of this stack into gConnectionID if gConnectionID is not a number then answer error "Please connect to the database first." exit to top end if -- Bearbeite diese Variablen so, dass sie deiner Datenbank und Tabelle entsprechen -- Dies setzt eine Tabelle namens Table1 mit 3 Feldern voraus put "Table1" into tTableName put "firstName, lastName, birthDate" into tFields put "Mary" into tFirstName put "Smith" into tLastName put the short date into tBirthDate -- Das ist unsinnig, aber gibt den Daten etwas Abwechslung -- erstelle den SQL - die :1, :2 & :3 Platzhalter in der SQL werden in der revExecuteSQL Zeile mit Variablen versehen put "INSERT INTO " & tTableName & " (" & tFields & ") VALUES (:1, :2, :3)" into tSQL -- sendet den SQL an die Datenbank und fügt Daten aus Variablen in die Platzhalter ein. revExecuteSQL gConnectionID, tSQL, "tFirstName", "tLastName", "tBirthDate" -- checkt das Ergebnis und zeigt eine positive oder eine negative Meldung an if the result is a number then answer info "New record added." else answer error "There was a problem adding the record to the database:" & cr & the result end if end mouseUp Hier wird eine Platzhalter Technik benutzt, um Daten in einen SQL Befehl einzufügen. Wenn du einen SQL Befehl erstellst, benutze :1, :2 usw. um zu zeigen, wo die Variablen hingehören. Später im revExecuteSQL Befehl, fügst du die Namen der Variablen als extra Parameter hinter den SQL Befehl ein. Diese werden dann der Reihe nach eingefügt, d. H. Im obigen Beispiel wird der Inhalt der Variablen "tFirstName" anstelle von :1 verwendet und der Inhalt von tBirthDate wird verwendet, wo auch immer :3 erscheint. Klicke nun im Live Modus auf den Button "Daten einfügen" , um ihn zu testen. Du erhältst einen Dialog, der Erfolg oder Misserfolg meldet. Klicken dann erneut auf die Schaltfläche "Abfrage", und du solltest den neu eingefügten Datensatz in der Liste sehen. Bearbeiten oder Löschen vorhandener Daten Ich werde hier nicht zu sehr ins Detail gehen, da es beinahe das selbe Vorgehen ist, als Daten einzufügen. Um Daten zu bearbeiten, sollte der SQL folgende Form haben: UPDATE Table1 SET birthDate='12/06/1970' WHERE firstName='Mary' AND lastName='Smith' Und für das Löschen: DELETE FROM Table1 WHERE firstName='Mary' AND lastName='Smith' Dann verwendest du revExecuteSQL und überprüfst auf Fehler wie zuvor. Einfach gesagt: Wenn du Daten erhalten möchtest, benutzt du revDataFromQuery. Wenn du KEINE Daten erhalten möchtest, benutzt du revExecuteSQL. Verbindung beenden Es ist immer eine gute Idee, die Verbindung zur Datenbank zu beenden, wenn du fertig bist. Alle Verbindungen werden automatisch geschlossen, wenn deine Anwendung beendet wird. Es ist jedoch immer noch eine gute Vorgehensweise, dies selbst zu tun. Erstelle wieder einen Button mit dem Namen "Verbindung beenden" und kopiere das untenstehende Script in das Script des Buttons. on mouseUp put the connectionID of this stack into gConnectionID -- sollte eine Verbindung offen sein, schließe sie und leere gConnectionID if gConnectionID is a number then revCloseDatabase gConnectionID put empty into gConnectionID end if end mouseUp Arbeiten mit Binärdaten Um Binärdaten hochzuladen, musst du die Variable in der revExecuteSQL benutzen. Das '' SQLStatement '' kann einen oder mehrere Platzhalter enthalten, die durch einen Doppelpunkt (:) vorangestellte, fortlaufende Nummern sind. Der Befehl revExecuteSQL ersetzt das entsprechende Element in der Variablenliste für jeden dieser Platzhalter. Wenn du beispielsweise zwei Variablen namens "valueX" und "valueY" hast, kannst du ein "SQLStatement" verwenden, das Platzhalter wie folgt enthält: revExecuteSQL myID, "insert into mytable values(:1,:2)", "valueX","valueY" Wenn du Binärdateien verwendest, musst du das Präfix * b in den Variablennamen einfügen. Wenn also eine Variable, die eine Binärdatei enthält, "valueX" lautet, lautet der korrekte Code: revExecuteSQL connID, "insert into mytable values(:1)", "*bvalueX" Da der revExecuteSQL-Befehl den binären Marker "* b" löscht, wird er als Binärdatei an die Datenbank übergeben und nicht als Textdatei. Um eine Binärdatei zu erhalten, "'musst'" du revQueryDatabase und revDatabaseColumnNamed verwenden (auf keine andere Weise), um z. B. den Bilddatenspeicher aus einer Datenbank zu laden, in der sich Bilddateien in einer "Bild" Spalte (Column) befinden. put revQueryDatabase(connID, "SELECT * FROM images WHERE id=" & field "id" & ";") into tRecordSet put revDatabaseColumnNamed(tRecordSet, "image", tImage) into tError #tImage contains data revCloseCursor tRecordSet Beispiel mit UPDATE: put "UPDATE flags SET logo=:1 WHERE ID="& tID &" ;" into tSQL revExecuteSQL connID,tSQL,"*blogo Category:Database